home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / mxlibs / sblib / sbirq.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-11  |  1.9 KB  |  75 lines

  1. #ifndef IRQ_H
  2. #  define IRQ_H
  3.  
  4. #include "dsp8.h"
  5. #include "dma8cnt.h"
  6. #include "type.h"
  7.  
  8.  
  9.  
  10. //8259 irq controller mask.
  11. //~~~~~~~~~~~~~~~~~~~~~~~~~
  12. #define IRQ2_MASK   0xFB
  13. #define IRQ3_MASK   0xF7
  14. #define IRQ5_MASK   0xDF
  15. #define IRQ7_MASK   0x7F
  16.  
  17.  
  18. #define IRQ2        0x0A
  19. #define IRQ3        0x0B
  20. #define IRQ5        0x0D
  21. #define IRQ7        0x0F
  22.  
  23.  
  24. //Sound blaster irq manager.
  25. //~~~~~~~~~~~~~~~~~~~~~~~~~~
  26. class SB_IRQ
  27. {
  28.    public:
  29.           SB_IRQ( DMA_8_BITS *dma, DSP_CONTROL *dsp );
  30.           ~SB_IRQ( void ){};
  31.  
  32.           bool AllocBuffer( void );
  33.           void FreeBuffer( void );
  34.           void InstallIrq( void );
  35.           void SetBuffer( char *buffer, long length );
  36.           void SetRawHandle( int hd );
  37.           void SetWaveHandle( int hd );
  38.           void SetVocHandle( int hd );
  39.           void SetEndOfOutputFlag( unsigned *endOfOutput );
  40.           void SetIrq( int irqNum );
  41.           void StartRawPlay( unsigned rate );
  42.           void StartWavePlay( unsigned rate );
  43.           void StartBufferPlay( unsigned rate );
  44.           void StartVocPlay( unsigned rate );
  45.           void UninstallIrq( void );
  46.  
  47.    protected:
  48.  
  49.           /* Interrupt handler.
  50.              ------------------ */
  51.           static void interrupt DspWaveFileIntr( ... );
  52.           static void interrupt DspRawFileIntr( ... );
  53.           static void interrupt DspBufferIntr( ... );
  54.           static void interrupt DspVocFileIntr( ... );
  55.  
  56.           unsigned char oldState;
  57.  
  58.           /* Pour les fichiers voc.
  59.              ---------------------- */
  60.           unsigned long dataLength;
  61.  
  62.           unsigned mask, *voiceEnd;
  63.           char *dataPTR, *dataPTR2;
  64.  
  65.           int irq, handle, ind, flag;
  66.           long nbBytePtr1, nbBytePtr2;
  67.  
  68.           bool isFile;
  69.  
  70.           DMA_8_BITS   *intrDmaPTR;
  71.           DSP_CONTROL  *intrDspPTR;
  72.           FILE_TYPE    fType;
  73. };
  74.  
  75. #endif